﻿Imports System.Data.SqlClient

Public Class DatiSottoprocedura

    Public CodSottoprocedura As Integer
    Public CodLaboratorio As Integer
    Private MySottoprocedura As Sottoprocedura


    Private Class Sottoprocedura
        Private _Sottoprocedura As String
        Private _Laboratorio As String
        Private _LeadTime As Integer
        Private _CapacitaProduttiva As Integer
        Private _GiorniLavorazione As Integer
        Private _CodSottoprocedura As Integer
        Private _CodLaboratorio As Integer
        Private ConnectionString As String
        Private Connection As SqlConnection

        Public Property Sottoprocedura()
            Get
                Return _Sottoprocedura
            End Get
            Set(value)
                _Sottoprocedura = value
            End Set
        End Property

        Public Property Laboratorio()
            Get
                Return _Laboratorio
            End Get
            Set(value)
                _Laboratorio = value
            End Set
        End Property

        Public Property LeadTime()
            Get
                Return _LeadTime
            End Get
            Set(value)
                _LeadTime = value
            End Set
        End Property

        Public Property CapacitaProduttiva()
            Get
                Return _CapacitaProduttiva
            End Get
            Set(value)
                _CapacitaProduttiva = value
            End Set
        End Property

        Public Property GiorniLavorazione()
            Get
                Return _GiorniLavorazione
            End Get
            Set(value)
                _GiorniLavorazione = value
            End Set
        End Property

        Public Property CodSottoprocedura()
            Get
                Return _CodSottoprocedura
            End Get
            Set(value)
                _CodSottoprocedura = value
            End Set
        End Property

        Public Property CodLaboratorio()
            Get
                Return _CodLaboratorio
            End Get
            Set(value)
                _CodLaboratorio = value
            End Set
        End Property

        Public Sub New(CodiceSottoprocedura As Integer, CodiceLaboratorio As Integer)
            Dim SqlStr As String
            Dim SqlComando As SqlCommand
            Dim SqlReader As SqlDataReader

            ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("FormFlussi.My.MySettings.CM_DBConnectionString").ConnectionString
            Connection = New SqlConnection(ConnectionString)

            Try
                Connection.Open()
                SqlStr = "select a.CodSottoProcedura, a.CodLaboratorio, b.Descrizione, c.RagSoc," & _
                    "a.GiorniLavorativi, a.LeadTime, a.CapacitaProduttiva " & _
                    "from T_LISTINO_SOTTOPROCEDURE_LABORATORI a inner join T_LISTINO_SOTTOPROCEDURE b " & _
                    "on a.CodSottoProcedura=b.CodSottoprocedura inner join T_ODONTOTECNICI c " & _
                    "on a.CodLaboratorio=c.Cod where b.Codsottoprocedura=@CodSottoprocedura and " & _
                    "c.Cod=@CodLaboratorio"


                SqlComando = New SqlCommand(SqlStr, Connection)
                SqlComando.Parameters.AddWithValue("@CodSottoprocedura", CodiceSottoprocedura)
                SqlComando.Parameters.AddWithValue("@CodLaboratorio", CodiceLaboratorio)
                SqlReader = SqlComando.ExecuteReader()
                SqlReader.Read()

                _CodSottoprocedura = SqlReader.Item("CodSottoProcedura")
                _CodLaboratorio = SqlReader.Item("CodLaboratorio")
                _Sottoprocedura = SqlReader.Item("Descrizione")
                _Laboratorio = SqlReader.Item("RagSoc")
                _GiorniLavorazione = SqlReader.Item("GiorniLavorativi")
                _LeadTime = SqlReader.Item("LeadTime")
                _CapacitaProduttiva = SqlReader.Item("CapacitaProduttiva")

                SqlReader.Close()

                Connection.Close()



            Catch ex As Exception
                Utility.MessaggioErrore("Errore nella lettura dei dati dal db", ex, "Flussi: DatiSottoprocedura")

            End Try


        End Sub

        Public Sub AggiornaDati()
            Dim SqlStr As String
            Dim SqlComando As SqlCommand


            If IsNothing(Connection) = True Then
                Throw New Exception("Connessione al db non settata")
                Exit Sub
            End If

            Connection.Open()

            Try
                SqlStr = "update T_LISTINO_SOTTOPROCEDURE_LABORATORI set GiorniLavorativi=@GiorniLavorativi, " & _
                    "LeadTime=@LeadTime, CapacitaProduttiva=@CapacitaProduttiva " & _
                    "where CodSottoProcedura=@CodSottoProcedura and CodLaboratorio=@CodLaboratorio"
                SqlComando = New SqlCommand(SqlStr, Connection)

                SqlComando.Parameters.AddWithValue("@GiorniLavorativi", _GiorniLavorazione)
                SqlComando.Parameters.AddWithValue("@LeadTime", _LeadTime)
                SqlComando.Parameters.AddWithValue("@CapacitaProduttiva", _CapacitaProduttiva)
                SqlComando.Parameters.AddWithValue("@CodSottoProcedura", _CodSottoprocedura)
                SqlComando.Parameters.AddWithValue("@CodLaboratorio", _CodLaboratorio)

                SqlComando.ExecuteNonQuery()

                SqlComando.Dispose()
            Catch ex As Exception
                Utility.MessaggioErrore("Errore nell'aggiornamento dei dati della Sottoprocedura", ex, "FLUSSI: DatiSottoprocedura")
            End Try

            Connection.Close()

        End Sub
    End Class

    Private Sub DatiSottoprocedura_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load


        Try


            MySottoprocedura = New Sottoprocedura(CodSottoprocedura, CodLaboratorio)

            Me.TXSottoprocedura.Text = MySottoprocedura.Sottoprocedura
            Me.TXLaboratorio.Text = MySottoprocedura.Laboratorio
            Me.TXLeadTime.Text = MySottoprocedura.LeadTime
            Me.TXGiorniLavorazione.Text = MySottoprocedura.GiorniLavorazione
            Me.TXCapacitaProduttiva.Text = MySottoprocedura.CapacitaProduttiva
        Catch ex As Exception
            Utility.MessaggioErrore("Errore nella valorizzazione dei campi", ex, "FLUSSI: DatiSottoprocedura")

        End Try



    End Sub

    Private Sub BTOK_Click(sender As System.Object, e As System.EventArgs) Handles BTOK.Click

        'Verifico che i campi Lead Time, Giorni Lavorazione e Capacità Produttiva contengano dei numeri interni positivi */

        Try
            MySottoprocedura.LeadTime = Convert.ToInt16(Me.TXLeadTime.Text)
            If MySottoprocedura.LeadTime < 0 Then
                MsgBox("Inserire un numero intero maggiore di zero per il campo Lead Time")
                Me.TXLeadTime.Focus()
                Exit Sub
            End If
        Catch ex As Exception
            MsgBox("Inserire un numero intero maggiore di zero per il campo Lead Time")
            Me.TXLeadTime.Focus()
            Exit Sub
        End Try


        Try
            MySottoprocedura.GiorniLavorazione = Convert.ToInt16(Me.TXGiorniLavorazione.Text)
            If MySottoprocedura.GiorniLavorazione < 0 Then
                MsgBox("Inserire un numero intero maggiore di zero per il campo Giorni Lavorazione")
                Me.TXGiorniLavorazione.Focus()
                Exit Sub
            End If
        Catch ex As Exception
            MsgBox("Inserire un numero intero maggiore di zero per il campo Giorni Lavorazione")
            Me.TXGiorniLavorazione.Focus()
            Exit Sub
        End Try

        Try
            MySottoprocedura.CapacitaProduttiva = Convert.ToInt16(Me.TXCapacitaProduttiva.Text)
            If MySottoprocedura.CapacitaProduttiva < 0 Then
                MsgBox("Inserire un numero intero maggiore di zero per il campo Capacità Produttiva")
                Me.TXCapacitaProduttiva.Focus()
                Exit Sub
            End If
        Catch ex As Exception
            MsgBox("Inserire un numero intero maggiore di zero per il campo Capacità Produttiva")
            Me.TXCapacitaProduttiva.Focus()
            Exit Sub
        End Try

        Try
            MySottoprocedura.AggiornaDati()
            MsgBox("Dati aggiornati correttamente")
        Catch ex As Exception
            Utility.MessaggioErrore("Errore nell'aggiornamento dei dati della sottoprocedura", ex, "FLUSSI:DatiSottoprocedura")
        End Try
    End Sub


    Private Sub BTEsci_Click(sender As System.Object, e As System.EventArgs) Handles BTEsci.Click
        Me.Close()
    End Sub


End Class